package cn.shop.admin.service;

import cn.shop.admin.entity.backRoleModule.BackRole;
import cn.shop.admin.req.AssignRoleReq;
import cn.shop.base.MyService;

import java.util.List;

/**
 * 角色表(BackRole)表服务接口
 *
 * @author jzw
 * @since 2021-11-17 11:00:28
 */
public interface BackRoleService extends MyService<BackRole> {

	/**
	 * 批量设置默认角色
	 *
	 * @param idList 角色id集合
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:32
	 */
	boolean setDefaultRole(List<Long> idList);

	/**
	 * 批量设置内置角色
	 *
	 * @param idList 角色id集合
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:29
	 */
	boolean setInitRole(List<Long> idList);

	/**
	 * 获取全部默认角色id
	 *
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:40
	 */
	List<Object> listDefaultRole();

	/**
	 * 获取用户关联的角色
	 *
	 * @param id 账户id
	 * @return
	 * @author jy
	 * @since 2022/1/17 15:18
	 */
	List<Long> getRoleByUserId(Long id);

	/**
	 * 分配角色
	 *
	 * @param assignRoleReq 实体对象
	 * @return
	 */
	boolean assignRole(AssignRoleReq assignRoleReq);

	/**
	 * 通过角色code查询角色的所有权限
	 *
	 * @param code 角色code
	 * @return 权限code
	 * @author jzw
	 * @since 2021/11/17 17:12
	 */
	List<String> permissionCodeByRoleCode(String code);

	/**
	 * 新增数据
	 *
	 * @param backRole 实体对象
	 * @return 新增结果
	 * @author jzw
	 * @since 2021-11-17 11:33:20
	 */
	boolean insert(BackRole backRole);

	/**
	 * 修改数据
	 *
	 * @param backRole 实体对象
	 * @return 修改结果
	 * @author jzw
	 * @since 2021-11-17 11:33:20
	 */
	boolean update(BackRole backRole);

	/**
	 * 通过角色id查询角色所有权限
	 *
	 * @param id 角色id
	 * @return 所有数据
	 * @author jzw
	 * @since 2021-11-17 11:33:20
	 */
	List<Long> queryPermissionsByRoleId(Long id);


}

